import { TemplateRef } from '@angular/core';
import { ApiType } from '@core/services/api';

export interface NgxTableConfig {
  colouns: Array<NgxTableColumn>,
  showCheckBox?: boolean, // 复选框 默认false
  showToolBar?: boolean, // 是否显示toolbar 默认false
  hideFilter?: boolean, // 是否隐藏过滤栏 默认false
  editBtn?: TemplateRef<void> | Array<BtnConfig>, // 按钮配置 支持template
  defalutParam?: {}, // 默认参数
  reqUrl: ApiType, // 后端请求
  data: Array<any>, // 自定义数据
}

/**
 * table内容
 */
export interface NgxTableColumn {
  index: string, // 字段
  title: string, // 标题
  sort?: boolean, // 是否排序 默认true
  queryField?: string, // 检索参数 默认index
  secondQueryField?: string, // 范围检索 结束字段
  filter: {
    hideFilter?: boolean, // 是否隐藏检索 默认false
    placeholder?: string, // 检索框提示信息 默认title
    type: FilterType,
    items?: Array<{label: string, value: number | string}> // 字典翻译 下拉选择
    translate?: boolean // 是否翻译字典 默认true 翻译
  }
}

/**
 * 检索类型
 */
export enum FilterType {
  string = 'string',
  select = 'select',
  date = 'date',
  dateTime = 'dateTime',
  dateRange = 'dateRange'
}

export interface BtnConfig {
  title: string, // 按钮名称
  theme?: 'primary' | 'danger' | 'default', // 按钮主题 默认主题颜色
  iif: (data) => boolean // 根据条件过滤是否显示
}
